const jwt = require("jsonwebtoken");
const tokenKey = require("../config/signConfig").TokenKey;
const {
  message,
  requestLevel: { loginTimeOut },
} = require("./message");
/*
 * @param {string} type 'user'||'admin'      用户类型
 * @param {string} user                      用户名
 * @param {bool} rempsd                      是否记住密码
 */
exports.createToken = (type, id, expiresIn = "6h") => {
  let payload = {
    id,
    type,
    date: new Date(),
  };
  return jwt.sign(payload, tokenKey, {
    expiresIn,
  });
};
/*
 * @param {object} req       前端请求对象
 * @param {object} res       服务端接收对象
 * @param {fn} next          中间件响应方法
 */
exports.checkToken = (req, res, next) => {
  jwt.verify(res.params.token, tokenKey, function (err, decoded) {
    if (err) {
      message({ res, msg: "登录超时", type: loginTimeOut });
      res.sendMsg && res.sendMsg();
      return;
    }
    res.params.decoded = decoded;
    next();
  });
};
